home *** CD-ROM | disk | FTP | other *** search
/ Reverse Code Engineering RCE CD +sandman 2000 / ReverseCodeEngineeringRceCdsandman2000.iso / RCE / Tools / Win95 Secrets / SETUP.Z / HMODULE.H < prev    next >
Encoding:
C/C++ Source or Header  |  1995-07-19  |  4.3 KB  |  132 lines

  1. //==================================
  2. // SHOW16 - Matt Pietrek 1995
  3. // FILE: HMODULE.H
  4. //==================================
  5. #pragma pack (1)
  6.  
  7. typedef struct
  8. {
  9.     WORD    sector_offset;      // Offset to logical sector
  10.     WORD    segment_length;     // Size in bytes of segment
  11.     WORD    flags;              // flags for segment
  12.     WORD    alloc_size;         // Segment allocation size
  13.     WORD    handle;             // Global heap handle assigned by loader
  14. } SEGMENT_RECORD, FAR * LPSEGMENT_RECORD;
  15.  
  16. typedef enum
  17. {                           // Segment type constants
  18.   CODE      = 0x0000,       // Code segment type
  19.   DATA      = 0x0001,       // Data segment type
  20. } SEGMENT_TYPES;
  21.  
  22. //
  23. // In memory representation of the module table
  24. //
  25. typedef struct
  26. {
  27.    WORD     ne_signature;           // 'NE'
  28.    WORD     ne_usage;               // reference count of module
  29.    WORD     ne_npEntryTable;        // near pointer to entry table
  30.    HMODULE  ne_npNextExe;           // next module database
  31.    WORD     ne_npAutoData;          // near pointer to DGROUP segment entry
  32.    WORD     ne_npFileInfo;          // near pointer to OFSTRUCT with file name
  33.    WORD     ne_flags;
  34.    WORD     ne_autodata;            // segment index of DGROUP segment
  35.    WORD     ne_heap;
  36.    WORD     ne_stack;
  37.    DWORD    ne_csip;
  38.    DWORD    ne_sssp;
  39.    WORD     ne_cseg;
  40.    WORD     ne_cModules;
  41.    WORD     ne_cbNonResNamesTab;
  42.    WORD     ne_segtab;
  43.    WORD     ne_rsrcTab;
  44.    WORD     ne_resNamesTab;
  45.    WORD     ne_modRefTab;
  46.    WORD     ne_importedNamesTab;
  47.    DWORD    ne_nonResNamesTab;
  48.    WORD     ne_cMovEnt;
  49.    WORD     ne_align;
  50.    WORD     ne_cres;
  51.    unsigned char ne_exetyp;
  52.    unsigned char ne_flagsother;
  53.    WORD     ne_importedNamesTab2;
  54.    WORD     ne_importedNamesTab3;
  55.    WORD     ne_swaparea;        // minimum code swap area size
  56.    WORD     ne_expver;          // expected windows version num
  57.    DWORD    ne_Win32BaseAddr1;          // (Win32 only) Base addr of module
  58.    DWORD    ne_Win32BaseAddr2;          // (Win32 only) Base addr of module
  59.    DWORD    ne_Win32ResourceAddr;       // (Win32 only) Base addr of resources
  60. } MODULE, FAR * LPMODULE;
  61.  
  62. typedef struct
  63. {
  64.     WORD    firstEntry;
  65.     WORD    lastEntry;
  66.     WORD    nextBundle;
  67. } ENTRY_BUNDLE_HEADER, FAR *LPENTRY_BUNDLE_HEADER;
  68.  
  69. typedef struct
  70. {
  71.     BYTE    segType;
  72.     BYTE    flags;
  73.     BYTE    segNumber;
  74.     WORD    offset;
  75. } ENTRY, FAR * LPENTRY;
  76.  
  77. typedef struct
  78. {
  79.     WORD    ID;
  80.     WORD    count;
  81.     DWORD   function;
  82. } RESOURCE_TYPE, FAR *LPRESOURCE_TYPE;
  83.  
  84. typedef struct
  85. {
  86.     WORD    offset;
  87.     WORD    length;
  88.     WORD    flags;
  89.     WORD    ID;
  90.     WORD    handle;
  91.     WORD    usage;
  92. } RESOURCE_INFO, FAR * LPRESOURCE_INFO;
  93.  
  94. #define NEAPPTYP        0x0700  // Application type mask
  95. #define NEWINAPI        0x0300  // Uses windowing API
  96. #define NEWINCOMPAT     0x0200  // Compatible with windowing API
  97. #define NENOTWINCOMPAT  0x0100  // Not compatible with windowing API
  98. #define NENONRES        0x0080  // Contains non-resident code segments
  99. #define NELIM32         0x0010  // Uses LIM 3.2 API
  100. #define NEPROT          0x0008  // Runs in protected mode only
  101. #define NEPPLI          0x0004  // Per-Process Library Initialization
  102.  
  103. // Target operating systems
  104.  
  105. #define NE_UNKNOWN      0
  106. #define NE_OS2          1   // Microsoft/IBM OS/2
  107. #define NE_WINDOWS      2   // Microsoft Windows
  108. #define NE_DOS4         3   // Microsoft European MS-DOS 4.x
  109. #define NE_DEV386       4   // Microsoft Windows 386
  110.  
  111. #define MODFLAGS_DLL                0x8000
  112. #define MODFLAGS_CALL_WEP           0x4000
  113. #define MODFLAGS_SELF_LOADING       0x0800
  114. #define MODFLAGS_APPTYPE            0x0300
  115.                                     // 0x0300 = Uses Windows API
  116.                                     // 0x0200 = Can be run in a window
  117.                                     // 0x0100 = full-screen text app
  118. #define MODFLAGS_IMPLICIT_LOAD      0x0040  // DLL is implicitly loaded
  119. #define MODFLAGS_WIN32              0x0010
  120. #define MODFLAGS_AUTODATA           0x0002
  121. #define MODFLAGS_SINGLEDATA         0x0001
  122.  
  123. typedef struct tagOFSTRUCT_EXT
  124. {
  125.     WORD cBytes;            // This is a single BYTE in the regular OFSTRUCT
  126.     BYTE fFixedDisk;
  127.     UINT nErrCode;
  128.     BYTE reserved[4];
  129.     char szPathName[128];
  130. } OFSTRUCT_EXT;
  131.  
  132.